package hxy.bytecode.algorithm.sort;

/**
 * 快速排序
 *
 * @author eric
 */
public class QuickSort1 {

    public QuickSort1() {

    }

    /** TODO 目前这个排序存在问题，并且不正确！
     * @param a
     * @param i
     * @param j
     */
    public void quickSort(int[] a, int i, int j) {
//        int i = 0, j = a.length - 1;

        if (i >= j) {
            return;
        }

        int mid = (i + j) / 2;

        quickSort(a, i, mid);
        quickSort(a, mid + 1, j);

        // 第一个值记为基准值
        int index = a[i];
        while (i < j) {
            if (index > a[j]) {
                int tmp = a[i];
                a[i] = a[j];
                a[j] = index;
                i++;
            } else {
                j--;
            }
        }
    }

    public static void main(String[] args) {

        int[] a = {1, 2, 5, 4, 7, 9, 0, 8, 3, 6};

        new QuickSort1().quickSort(a, 0, a.length-1);

        for (int i = 0; i <a.length ; i++) {

            System.out.print(a[i]+"\t");

        }

    }

}
